我們可以用一些簡單的 alias 增加我們維運的效率
這邊我們會預設你有兩種環境 dev 跟 prod,這邊的環境會由你在下指令時選擇,所以我們會有變數的設定($1)。專案名稱我們設定為 “saru-playground”
設定 aws eks update context
aws eks update-kubeconfig --region region-code --name my-cluster
設定 use-context
藉由 bastion name 找出 Bastion instance ID
INSTANCE_ID=$(aws --profile saru-playground ec2 describe-instances --filters "Name=tag:Name,Values=saru-playground-$1-ec2-jump" "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].InstanceId" --output text)
找出 Endpoint
aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters "{\"portNumber\":[\"443\"],\"localPortNumber\":[\"14443\"],\"host\":[\"$EKS_ENDPOINT\"]}" --profile saru-playground
設定成 Alias
prieks(){
kubectl config use-context saru-playground-$1
INSTANCE_ID=$(aws --profile saru-playground ec2 describe-instances --filters "Name=tag:Name,Values=saru-playground-$1-ec2-jump" "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].InstanceId" --output text)
EKS_ENDPOINT=$(aws --profile saru-playground eks describe-cluster --name "saru-playground-$1" --query "cluster.endpoint" --output text | sed 's/https:\/\///')
echo "$EKS_ENDPOINT"
aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters "{\"portNumber\":[\"443\"],\"localPortNumber\":[\"14443\"],\"host\":[\"$EKS_ENDPOINT\"]}" --profile saru-playground
}
此時我們就可以使用簡單的指令
prieks dev
開啟另一個視窗,就可以直接連線
$ kubectl get pods -A